import java.io.File;
import java.io.FileInputStream;

import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;

public class PrintImage {
	
  static public void main(String args[]) throws Exception {
	  
	 // Variablen deklarieren
	  String pfadBild="D:/Dokumente und Einstellungen/Schweingruber Roger/Desktop/Bild/";
	  String pfadBildalt="D:/Dokumente und Einstellungen/Schweingruber Roger/Desktop/alt/";
	  String temp=" ";
	  String pfad =" ";
	  String pfadv=" ";
	  boolean datei=false;
	  boolean umbOK = false;
	  boolean versch=false;
	  int zaehler=0;

for(;true;){ 
	
	Thread.sleep(60000);
	
	zaehler++;
	
	 while (datei == false){  	// File auslesen
	 File dir = new File(pfadBild);
	  File[] fileList = dir.listFiles();
	  for(File f : fileList) {
		  if(f.getParentFile() != null){
			  System.out.println("laenge hat null");
			  datei = true;
			  } else {
				  System.out.println("Laenge hat eins");
				  datei = false;
			  }
	  }
	 }
	 
	  // Dateiname Ausgeben
	 System.out.println(temp);
	 System.out.println(pfad);

	 if(datei == true){
		  Thread.sleep(5000); 
		 File dir = new File(pfadBild);
		  File[] fileList = dir.listFiles();
		  for(File f : fileList) {
		      temp = f.getName();
		      pfad = f.getAbsolutePath();
		  }
		 
		 //Umbennen
		
	  File source = new File(pfad);
	  File destination = new File(pfadBild+"Bild.jpg");
	  if(!source.renameTo(destination)){
	      System.err.println("Fehler beim Umbenennen der Datei: " + source.getName());
	      umbOK = false;
	      datei = false;
	  } else {
		  System.out.println("Datei umbenannt");
		  umbOK=true;
		  datei = false;
	  }
	 } 
	  // Drucken
	  if (umbOK==true){
		umbOK=false;
		PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
    	pras.add(new Copies(1));
    	PrintService pss[] = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.GIF, pras);
    	if (pss.length == 0)
    		throw new RuntimeException("No printer services available.");
    	PrintService ps = pss[0];
    	System.out.println("Printing to " + ps);
    	DocPrintJob job = ps.createPrintJob();
    	FileInputStream fin = new FileInputStream(pfadBild+"Bild.jpg");
    	Doc doc = new SimpleDoc(fin, DocFlavor.INPUT_STREAM.GIF, null);
    	job.print(doc, pras);
    	fin.close();
    	System.out.println("Gedruckt");   
    	 Thread.sleep(10000);
    	versch=true;
	  }
    
    // Datei verschieben
    if(versch==true){
    File dir = new File(pfadBild);
	File[] fileList = dir.listFiles();
    	for(File v : fileList) {
    		pfadv = v.getAbsolutePath();
    	}
    
    	File quelle = new File(pfadv);
    	System.out.println(pfadv);
       
    	File ziel = new File(pfadBildalt + "bild"+zaehler+".jpg");

    	boolean bla = quelle.renameTo(ziel);
    	if(!bla){
    		System.err.println("Das war wohl nix!");
    	}else{
    		System.out.println("Datei verschoben und ausgedruckt");
    	}
    	datei = false;
    	versch = false;
	}
    Thread.sleep(5000);
}
	   
} //main
  
}
